﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;

namespace MadiFracas
{
	public class Util
	{
		// A partir de un mapa de numeros y un numero que representa a un pais devuelve
		// los puntos que componen el pais
		public static List<Point> obtenerPuntosPais(CountryManager cman, int pais)
		{
			List<Point> puntos = new List<Point>();

			for (int i = 0; i < cman.Size.X; i++)
			{
				for (int j = 0; j < cman.Size.Y; j++)
				{
					Point p = new Point(i, j);
					if (pais == cman.Matriz[i, j] && esBorde(p, cman.Matriz, pais))
						puntos.Add(p);
				}
			}
			return puntos;
		}

		private static bool esBorde(Point p, int[,] matriz, int pais)
		{
			bool resultado = false;
			int x = matriz.GetLength(1);
			int y = matriz.GetLength(2);
			int maxi = Convert.ToInt32(p.X) - 1;
			int mini = Convert.ToInt32(p.X) + 1;
			int maxj = Convert.ToInt32(p.Y) - 1;
			int minj = Convert.ToInt32(p.Y) + 1;

			for (int i = max(0, maxi); !resultado || i < min(x - 1, mini); i++)
			{
				for (int j = max(0, maxj); !resultado || j < min(y - 1, minj); j++)
				{
					if (matriz[i, j] != pais)
						resultado = true;
				}
			}
			return resultado;
		}

		public static int max(int a, int b)
		{
			return (a > b ? a : b);
		}

		public static int min(int a, int b)
		{
			return (a < b ? a : b);
		}
	}
}
